﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class DanhMuc_AcountManager : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindDrop();
            BindGrid();
            EnabelControls(false);
            btnsave.Enabled = false;
            btnedit.Enabled = false;
            btndelete.Enabled = false;
            btngrant.Enabled = false;
        }
    }
    protected void BindDrop()
    {
        ListItem item;
        item = new ListItem("---Chọn Đơn vị---", "0");
        drldonvi.Items.Add(item);
        _dbDataContext data = new _dbDataContext();
        string madonvi = MemberShip_ASP.GetMaDonViFromUserName(Page.User.Identity.Name);//lay ma don vi thuoc username dang nhap
        var d = from p in data.tblCoSoDoans where ((p.TrucThuoc.Trim() == madonvi.Trim() || p.MaDonVi.Trim()==madonvi) && p.GiaiThe==false && p.MaDonVi.Substring(0,3)!="CDD") select p; //khong tao tai khoan cho chi doan
        foreach (var r in d)
        {
            item = new ListItem(r.TenDonVi.Trim(), r.MaDonVi.Trim());
            drldonvi.Items.Add(item);
        }
    }
    protected void BindGrid()
    {
        _dbDataContext _db = new _dbDataContext();
        string madonvi = MemberShip_ASP.GetMaDonViFromUserName(Page.User.Identity.Name);//lay ma don vi thuoc username dang nhap
        var val = from p in _db.tblAcounts
                  where (p.TenDangNhap.Trim().ToUpper() != "ADMIN" &&(p.tblCoSoDoan.TrucThuoc.Trim()==madonvi || p.tblCoSoDoan.MaDonVi==madonvi) && p.TenDangNhap.Trim()!=Page.User.Identity.Name)
                  select new
                  {
                      ID = p.ID,
                      TenHienThi = p.TenHienThi.Trim(),
                      Email = p.Email.Trim(),
                      DonVi = p.tblCoSoDoan.TenDonVi.Trim(),
                      TenDangNhap = p.TenDangNhap.Trim()
                  };
        grid.DataSource = val.ToList();
        grid.DataBind();
    }
    protected void EnabelControls(bool status)
    {
        txttendangnhap.Enabled = status;
        txtmakhau.Enabled = status;
        txtxacnhanmatkhau.Enabled = status;
        txttenhienthi.Enabled = status;
        txtemail.Enabled = status;
        drldonvi.Enabled = status;
        chkgrant.Enabled = status;
    }
    protected void ClearControls()
    {
        txttendangnhap.Text = "";
        txtmakhau.Text = "";
        txtxacnhanmatkhau.Text = "";
        txtemail.Text = "";
        txttenhienthi.Text = "";
        txtemail.Text = "";
        chkgrant.Checked = false;
        BindDrop();
    }
    protected void btnadd_Click(object sender, EventArgs e)
    {
        if (btnadd.Text == "Hủy")
        {
            EnabelControls(false);
            ClearControls();
            btnadd.Text = "Thêm mới";
            btnsave.Enabled = false;
            drldonvi.SelectedValue = "0";
        }
        else
        {
            EnabelControls(true);
            ClearControls();
            drldonvi.Items.Clear();
            BindDrop();
            btngrant.Enabled = false;
            btndelete.Enabled = false;
            btnedit.Enabled = false;
            btnsave.Enabled = true;
            btnadd.Text = "Hủy";
        }
    }
    protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int id = int.Parse(grid.DataKeys[e.RowIndex].Value.ToString());
        txtid.Text = id.ToString();
        _dbDataContext _db = new _dbDataContext();
        var val = _db.tblAcounts.Single(r => r.ID == id);
        txttenhienthi.Text = (val.TenHienThi!=null?val.TenHienThi.Trim():"");
        txtemail.Text = (val.Email!=null?val.Email.Trim():"");
        drldonvi.SelectedValue = val.DonVi.ToString().Trim();
        txttendangnhap.Text = val.TenDangNhap.Trim();
        chkgrant.Checked = (bool)val.PhanQuyen;
        EnabelControls(false);
        statusLabel.Text = "";
        btnedit.Enabled = true;
        btngrant.Enabled = true;
        btndelete.Enabled = true;
        btnadd.Text = "Thêm mới";
        btnsave.Enabled = false;
    }
    protected void btnsave_Click(object sender, EventArgs e)
    {
        if (txttenhienthi.Text.Length == 0)
        {
            statusLabel.Text = "Chưa nhập tên hiển thị.";
            txttenhienthi.Focus();
            return;
        }
        if (drldonvi.SelectedValue.ToString() == "0")
        {
            statusLabel.Text = "Chưa chọ đơn vị.";
            return;
        }
        if (txttendangnhap.Text.Length == 0)
        {
            statusLabel.Text = "Chưa có tên đăng nhập.";
            txttendangnhap.Focus();
            return;
        }
        if (txtmakhau.Text.Length == 0)
        {
            statusLabel.Text = "Chưa nhập mật khẩu.";
            txtmakhau.Focus();
            return;
        }
        if (txtmakhau.Text.Trim() != txtxacnhanmatkhau.Text.Trim())
        {
            statusLabel.Text = "Xác nhận mật khẩu không đúng.";
            return;
        }
        _dbDataContext _db = new _dbDataContext();
        if (!CatalogAccess.KiemTraTrungTaiKhoan(txttendangnhap.Text))
        {
            bool success = CatalogAccess.InsertAcount(txttendangnhap.Text,txtmakhau.Text,txttenhienthi.Text,txtemail.Text,drldonvi.SelectedValue.ToString(),chkgrant.Checked);
            if (success)
            {
                BindGrid();
                statusLabel.Text = "Đã thêm thành viên mới";
                btnadd.Text = "Thêm mới";
                btngrant.Enabled = false;
                btndelete.Enabled = false;
                btnedit.Enabled = false;
                btnsave.Enabled = false;
                CatalogAccess.InsertRoleWithUser(_db.GetLastUserID());
                EnabelControls(false);
                ClearControls();
            }
        }
        else
        {
            statusLabel.Text = "Tên đăng nhập này đã được sử dụng";
        }
    }
    protected void btndelete_Click(object sender, EventArgs e)
    {
        if (txttendangnhap.Text.Length == 0)
        {
            statusLabel.Text = "Chưa chọn tài khoản";
        }
        else
        {
            bool success = CatalogAccess.DeleteAcount(txttendangnhap.Text);
            if (success)
            {
                EnabelControls(false);
                ClearControls();
                BindGrid();
                statusLabel.Text = "Đã xóa user";
                btndelete.Enabled = false;
                btngrant.Enabled = false;
                btnedit.Enabled = false;
            }
            else
            {
                statusLabel.Text = "Không thể xóa user vì đăng tồn tại trong các mục khác";
            }
        }
    }
    protected void btnedit_Click(object sender, EventArgs e)
    {
        int id=int.Parse(txtid.Text);
        bool doimatkhau = false;
        if (btnedit.Text == "Sửa")
        {
            btnedit.Text = "Lưu";
            EnabelControls(true);
            btngrant.Enabled = false;
            btndelete.Enabled = false;
        }
        else
        {
            if (txttenhienthi.Text.Length == 0)
            {
                statusLabel.Text = "Chưa nhập tên hiển thị.";
                txttenhienthi.Focus();
                return;
            }
            if (drldonvi.SelectedValue.ToString() == "0")
            {
                statusLabel.Text = "Chưa chọ đơn vị.";
                return;
            }
            if (txttendangnhap.Text.Length == 0)
            {
                statusLabel.Text = "Chưa có tên đăng nhập.";
                txttendangnhap.Focus();
                return;
            }
            if (txtmakhau.Text.Length != 0)
            {
                if (txtmakhau.Text.Trim() != txtxacnhanmatkhau.Text.Trim())
                {
                    statusLabel.Text = "Xác nhận mật khẩu không đúng.";
                    return;
                }
                doimatkhau = true;
            }
            
            bool success = CatalogAccess.UpdateAcount(id,txttendangnhap.Text,txtmakhau.Text,txttenhienthi.Text,txtemail.Text,drldonvi.SelectedValue.ToString(),chkgrant.Checked,doimatkhau);
            if (success)
            {
                btnedit.Text = "Sửa";
                statusLabel.Text = "Đã lưu những thay đổi";
                EnabelControls(false);
                BindGrid();
                btngrant.Enabled = true;
                btndelete.Enabled = true;
            }
        }
    }
    protected void btngrant_Click(object sender, EventArgs e)
    {
        if (txttendangnhap.Text.Length == 0)
        {
            statusLabel.Text = "Chưa chọn tài khoản";
        }
        else
        {
            SecurityLib.Sec_AES _ps = new SecurityLib.Sec_AES();
            Response.Redirect(PageURL.local + "DanhMuc/PhanQuyenTaiKhoan.aspx?id=" + _ps.Encrypt("1", "gold", 128) + "&subid=" + _ps.Encrypt("1", "gold", 128) + "&userid=" + _ps.Encrypt(txtid.Text, "gold", 128));
        }
    }
}